/*
  倒水
  题目描述
    在一个桌子上摆放了 n 个杯子，每个杯子中有一定量的水。
    小 A 同学负责向杯子中倒水，他总共倒了 k 次，每次会向从第 L 个杯子到第 R 个杯子中添加 P 毫升的水
    （注意：水只可能增加，不可能减少）。

    请问小 A 同学倒了 k 次水之后，n 个杯子每个杯子有多少毫升的水。
  输入
    第一行包含两个整数 n 和 k。
    第二行包含 n 个整数，表示一开始每个杯子中水的毫升数。
    接下来 k 行，每行包含三个整数 L，R，P，表示一次操作。

    数据范围
      1 ≤ n, k ≤ 100000,
      1 ≤ L ≤ R ≤ n,
      0 ≤ P ≤ 1000,
      0 ≤ 杯子中水的初始量 ≤ 1000
  输出
    共一行，包含 n 个整数，表示最终 n 个杯子每个杯子有多少毫升的水。
  样例输入
    8 3
    1 2 10 8 1 5 1 1
    7 8 12
    1 8 4
    2 3 12
  样例输出
    5 18 26 12 5 9 17 17
*/

#include <bits/stdc++.h>

using namespace std;

long long a[100001] = {}; // 杯子中初始水量
long long d[100001] = {}; // 差分值

int main() {
    int n; // 杯子总数
    int k; // 操作总数

    cin >> n;
    cin >> k;

    // 输入初始水量，并计算差分值
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        d[i] = a[i] - a[i - 1];  // 计算差分值, 提示: a[0] == 0
    }

    // 进行 k 轮操作，每一轮往 a[l] ~ a[r] 中加水
    for (int i = 1; i <= k; i++) {
        int l, r, p;
        cin >> l >> r >> p;
        d[l] = d[l] + p;          // 计算差分值
        d[r + 1] = d[r + 1] - p;  // 计算差分值
    }

    // 计算并输出 n 个杯子中的水量
    for (int i = 1; i <= n; i++) {
        a[i] = d[i] + a[i - 1];
        cout << a[i] << " ";
    }

    return 0;
}